Document repositories are often important hubs for productivity and collaboration within an organization. As a result, there is commonly a need to integrate other external systems, such as line of business (“LOB”) systems, with the resources stored in document repositories.
Some solutions allow organizations to incorporate data from external systems into their document repositories, allowing them to more easily incorporate data stored at the external systems into the repositories. Other solutions expose world wide web (“web” or “Web”) services that allow external systems to retrieve information from a document repository for use within the external system. Neither of these capabilities, however, makes it possible for external systems to be informed directly of events occurring within a document repository, such as changes made to documents or lists. This makes it difficult to incorporate data or documents held in a document repository in business processes managed by an external system.
Some document repository systems support functionality for permitting custom third-party code to be executed in response to the occurrence of a specified event. This functionality is typically enabled by allowing a document repository administrator to deploy the custom code to the actual servers running the document repository. Doing so, however, can be difficult or prohibitively expensive to manage in many cases. Moreover, in hosted and/or multi-tenant document repositories, this approach may be even more challenging because the custom code must be prevented from performing expensive or damaging operations to the hosted system, or from accessing data of other tenants of a multi-tenanted document repository.
One approach to address these problems is to run the custom code in a “sandbox” that restricts the custom code to a safe, isolated execution environment. In many cases, however, such a restriction not only prevents the code from performing expensive or malicious operations, but also prevents the code from performing some operations that may be necessary to achieve the desired goals of the custom code. As a result, it can be difficult or impossible to implement the custom code in a way that allows it to effectively execute within such a sandbox. It is with respect to these and other considerations that the disclosure made herein is presented.